home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / STRINGS.SWG / 0026_String Centering.pas < prev    next >
Pascal/Delphi Source File  |  1993-08-27  |  2KB  |  63 lines

  1. {
  2. GUY MCLOUGHLIN
  3.  
  4. >What's the easiest way to center an arbitrary string on a line?
  5. }
  6.  
  7. program CenterStringDemo;
  8.  
  9. { Return a copy of the MainString, with the SubString centered     }
  10. { within it. Routine passes copies of variables on the STACK,      }
  11. { taking up more STACK space than the one below, however variable  }
  12. { strings passed as parameters are not permanently changed.        }
  13. {                                                                  }
  14. function CenterStr1(MainString, SubString : String) : String;
  15. Var
  16.   InsertPos  : byte;
  17.   TempString : string;
  18. begin
  19.   TempString := MainString;
  20.   InsertPos  := succ((length(MainString) - length(SubString)) div 2);
  21.   move(SubString[1], TempString[InsertPos], length(SubString));
  22.   CenterStr1 := TempString;
  23. end;
  24.  
  25. { Center a sub-string withing the main-string. Routine uses VAR    }
  26. { parameters which pass pointers to the actual variable being      }
  27. { passed, making the changes permanent and saving on STACK space.  }
  28. {                                                                  }
  29. procedure CenterStr2(var MainString : string; var SubString : string);
  30. var
  31.   InsertPos : byte;
  32. begin
  33.   InsertPos := succ((length(MainString) - length(SubString)) div 2);
  34.   move(SubString[1], MainString[InsertPos], length(SubString))
  35. end;
  36.  
  37.  
  38. var
  39.   SubStr,
  40.   MainStr,
  41.   TempStr : string;
  42.  
  43. BEGIN
  44.   SubStr  := '----------';
  45.   MainStr := '012345678901234567890123456789';
  46.   { Return string with sub-string centered in main-      }
  47.   { string. Neither sub-string or main-string variables  }
  48.   { are permanently affected.                            }
  49.   TempStr := CenterStr1(MainStr, SubStr);
  50.   writeln(SubStr);
  51.   writeln(MainStr);
  52.   writeln(TempStr);
  53.   writeln;
  54.  
  55.   { Position sub-string in the center of main-string.    }
  56.   { Changes to main-string are permanent.                }
  57.   CenterStr2(MainStr, SubStr);
  58.   writeln(SubStr);
  59.   writeln(MainStr);
  60.   writeln(TempStr)
  61. END.
  62.  
  63.